# En esta clase se definen las reglas para deterimar los permisos que tiene cada rol de usuario
# Ejemplos de reglas:
# can :manage, :all - todas las acciones, todos los modelos
# can :index, :contacts - solo el index del model contact
# cannot :show, :localusers - no show en localusers
#
# El segundo parametro del can/cannot puede hacer referencia a un modelo o a un controlador, o etiqueta.
#
# Para incorporar el control en los controllers se puede:
# load_and_authorize_resource al comienzo del controller - controla todas las acciones del controller
# authorize_resource :resource => :localusers - lo mismo pero cuando el controller no tiene un modelo asociado
# authorize! :new, :model1 - particularmente en cada accion que se quiera controlar
#

class Ability
include CanCan::Ability

    def initialize(user)

      if user.role? :role_admin
        can :manage, :all
      end

      if user.role? :role_supervisor
        can :manage, :all
      end

      if user.role? :role_administrative
        can :manage, :all
      end
      
      if user.role? :role_customer
                
        can [:edit, :update, :show, :edit_contact_user_sign_in], Contact      #En el controlador se chequea que solo pueda editar y ver el contacto suyo
        can :manage, :my_wish_lists               #En el controlador se chequea que solo pueda editar y ver sus listas
        can :wish_list_materials_index, WishList  #En el controlador se chequea que solo pueda editar y ver los materiales de sus listas
        can :manage, :contact_profiles


        #can [:selector_list], Profile
        #can [:index], :my_wish_lists
        #can [:wish_list_materials_index], :wish_lists
        #cannot :show, :localusers
        #can :create, Model
        #cannot :create, Model
        #can :create_usuario, Model
      else

      end

    end
end
